-- Neovim 启动问题诊断脚本
-- 使用方法：nvim --headless -c "luafile test_neovim_startup.lua"

print("🔍 开始诊断 Neovim 启动问题...")

-- 测试基本 Lua 环境
print("\n📋 测试基本 Lua 环境:")
print("✅ Lua 版本: " .. _VERSION)

-- 测试 vim 基本对象
print("\n📋 测试 vim 基本对象:")
if vim then
    print("✅ vim 对象可用")
    print("✅ vim.version: " .. vim.version().major .. "." .. vim.version().minor .. "." .. vim.version().patch)
else
    print("❌ vim 对象不可用")
    return
end

-- 测试 package.loaded
print("\n📋 测试已加载的模块:")
if package.loaded then
    print("✅ package.loaded 可用")
    local count = 0
    for _ in pairs(package.loaded) do
        count = count + 1
    end
    print("✅ 已加载模块数量: " .. count)
else
    print("❌ package.loaded 不可用")
end

-- 测试 snacks.nvim 是否安装
print("\n📋 测试 snacks.nvim:")
local snacks_ok, snacks = pcall(require, "snacks")
if snacks_ok then
    print("✅ snacks.nvim 可用")
    if snacks.notifier then
        print("✅ snacks.notifier 可用")
    else
        print("⚠️  snacks.notifier 不可用 (可能未启用)")
    end
else
    print("❌ snacks.nvim 不可用: " .. tostring(snacks))
end

-- 测试 lazy.nvim
print("\n📋 测试 lazy.nvim:")
local lazy_ok, lazy = pcall(require, "lazy")
if lazy_ok then
    print("✅ lazy.nvim 可用")
else
    print("❌ lazy.nvim 不可用: " .. tostring(lazy))
end

-- 测试 astra.nvim 插件
print("\n📋 测试 astra.nvim:")
local astra_ok, astra = pcall(require, "astra.core")
if astra_ok then
    print("✅ astra.core 可用")
else
    print("❌ astra.core 不可用: " .. tostring(astra))
end

-- 测试 vim.notify
print("\n📋 测试 vim.notify:")
local notify_ok = vim.notify and true or false
if notify_ok then
    print("✅ vim.notify 可用")

    -- 测试通知功能
    local test_ok, test_err = pcall(function()
        vim.notify("测试通知", vim.log.levels.INFO, {
            title = "Astra 诊断",
            timeout = 1000,
        })
    end)

    if test_ok then
        print("✅ vim.notify 功能正常")
    else
        print("❌ vim.notify 功能异常: " .. tostring(test_err))
    end
else
    print("❌ vim.notify 不可用")
end

-- 测试插件配置目录
print("\n📋 测试插件配置:")
local config_paths = {
    "/home/ethan/.config/nvim",
    "/home/ethan/.config/nvim/lua/plugins",
    "/home/ethan/.local/share/nvim/lazy",
}

for _, path in ipairs(config_paths) do
    local exists = vim.fn.isdirectory(path) == 1
    print("  " .. (exists and "✅" or "❌") .. " " .. path)
end

print("\n🎯 诊断完成！")
print("💡 如果看到任何 ❌ 标记，那就是可能的问题所在")
print("📝 请将完整的错误信息提供给开发者进行分析")